//另一棵树的子树
class Solution1 {
    class TreeNode{
        public int val;
        public TreeNode left;
        public TreeNode right;

        public TreeNode(int val) {
            this.val = val;
        }
    }
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
          if(root==null){
              return false;
          }
        //1、判断两棵树 是不是两颗相同的树
        if(isSameTree(root,subRoot)){
            return true;
        }
        //2、subRoot是不是 root.left 子树
        if(isSubtree(root.left,subRoot)){
            return true;
        }
        //3、subRoot是不是 root.right 子树
        if(isSubtree(root.right,subRoot)){
            return true;
        }
        return false;
    }
    public boolean isSameTree(TreeNode root, TreeNode subRoot) {
        if(root==null&&subRoot==null){
            return true;
        }
        if(root==null&&subRoot!=null
        ||root!=null&&subRoot==null){
            return false;
        }
        if(root.val!=subRoot.val){
            return false;
        }
        return isSameTree(root.left,subRoot.left)
                &&isSameTree(root.right,subRoot.right);
    }
    }